<?php
//Ultima verificacion: 13-10-2014 ; 21-11-2014 ; 20-02-2015
class M_division extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener las divisiones existentes menos las borradas (-1)
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, curso.nombre AS curso,
											(SELECT nombre FROM espacioescolar WHERE espacioescolar.idEspacioEscolar=division.idEspacioEscolar AND espacioescolar.estado<>-1 LIMIT 1) AS espacioEscolar, 
											DATE_FORMAT(division.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(division.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM division, curso, ciclolectivo, turno
									  WHERE division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											ciclolectivo.estado<>-1 AND 
											curso.estado=1 AND 
											division.estado<>-1 AND 
											turno.estado=1 $restriccion
									  ORDER BY division.orden ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener las divisiones activas
	function buscarActivos($restriccion=null, $orderBy=null){
		if($orderBy==null)	$orderBy = "division.orden ASC";
	
		$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, curso.nombre AS curso, ciclolectivo.nombre AS cicloLectivo, 
											(SELECT nombre FROM espacioescolar WHERE espacioescolar.idEspacioEscolar=division.idEspacioEscolar AND espacioescolar.estado<>-1 LIMIT 1) AS espacioEscolar, 
											DATE_FORMAT(division.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											DATE_FORMAT(division.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM division, curso, ciclolectivo, turno
									  WHERE division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											ciclolectivo.estado<>-1 AND 
											curso.estado=1 AND 
											division.estado=1 AND 
											turno.estado=1 $restriccion
									  ORDER BY ".$orderBy);
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar una division
	function eliminar($idDivision=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `division` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `division`.`idDivision` = " . $this->db->escape($idDivision) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear una division
	function crear($idCurso=null, $idEspacioEscolar=null, $orden=null, $nombre=null, $colorDeFondo=null, $colorDeTexto=null, $descripcion=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `division` (`idDivision`,`idCurso`,`idEspacioEscolar`,`orden`,`nombre`,`colorDeFondo`,`colorDeTexto`,`descripcion`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
										         (NULL,".$this->db->escape($idCurso).",".$this->db->escape($idEspacioEscolar).",".$this->db->escape($orden).",".$this->db->escape($nombre).",".$this->db->escape($colorDeFondo).",".$this->db->escape($colorDeTexto).",".$this->db->escape($descripcion).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver una division en particular usada generalmente en el formulario de modificar
	function get($idDivision=null){
		$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, ciclolectivo.nombre AS cicloLectivo, curso.nombre AS curso
									  FROM division, curso, ciclolectivo, turno
									  WHERE division.idCurso=curso.idCurso AND 
											curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
											curso.idTurno=turno.idTurno AND 
											division.estado<>-1 AND 
											curso.estado<>-1 AND 
											ciclolectivo.estado<>-1 AND 
											turno.estado<>-1 AND 
											division.idDivision=".$this->db->escape($idDivision)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver la division contigua a una en particular usada generalmente en el formulario de modificar
	function getContiguo($idDivision=null, $cant=null, $idCicloLectivo=null, $idTurno=null, $idCurso=null){
		//111
		if($idCicloLectivo != 0 && $idTurno != 0 && $idCurso != 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idTurno != $idTurno || $consulta->row()->idCurso != $idCurso);
		}
		
		//110
		if($idCicloLectivo != 0 && $idTurno != 0 && $idCurso == 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idTurno != $idTurno);
		}
		
		//101
		if($idCicloLectivo != 0 && $idTurno == 0 && $idCurso != 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo || $consulta->row()->idCurso != $idCurso);
		}
		
		//100
		if($idCicloLectivo != 0 && $idTurno == 0 && $idCurso == 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCicloLectivo != $idCicloLectivo);
		}
		
		//011
		if($idCicloLectivo == 0 && $idTurno != 0 && $idCurso != 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idTurno != $idTurno || $consulta->row()->idCurso != $idCurso);
		}
		
		//010
		if($idCicloLectivo == 0 && $idTurno != 0 && $idCurso == 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idTurno != $idTurno);
		}
		
		//001
		if($idCicloLectivo == 0 && $idTurno == 0 && $idCurso != 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1' || $consulta->row()->idCurso != $idCurso);
		}
		
		//000
		if($idCicloLectivo == 0 && $idTurno == 0 && $idCurso == 0){
			do{
				$idDivision+=$cant;
				$consulta = $this->db->query("SELECT division.*, curso.idCicloLectivo, curso.idTurno, turno.estado AS estadoTurno
											  FROM division, curso, turno
											  WHERE curso.idTurno=turno.idTurno AND 
													division.idCurso=curso.idCurso AND 
													division.idDivision=".$this->db->escape($idDivision)."
											  LIMIT 1");
				if($consulta->num_rows == 0)
					return(0);
				
			}while($consulta->row()->estado=='-1' || $consulta->row()->estadoTurno=='-1');
		}		
		
		return($consulta->row()->idDivision);
	}
			
	//Este metodo se utiliza para modificar una division
	function modificar($idDivision=null, $idCurso=null, $idEspacioEscolar=null, $orden=null, $nombre=null, $colorDeFondo=null, $colorDeTexto=null, $descripcion=null, $estado=null){
		$consulta = $this->db->query("UPDATE `division` 
									 SET `idCurso` = ". $this->db->escape($idCurso) .",
										 `idEspacioEscolar` = ". $this->db->escape($idEspacioEscolar) .",
									     `orden` = ". $this->db->escape($orden) .",
									     `nombre` = ". $this->db->escape($nombre) .",
										 `colorDeFondo` = ". $this->db->escape($colorDeFondo) .",
										 `colorDeTexto` = ". $this->db->escape($colorDeTexto) .",
										 `descripcion` = ". $this->db->escape($descripcion) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `division`.`idDivision` = " . $this->db->escape($idDivision) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>